// 1576. 替换所有的问号
// 思路：因为题目要求最终的字符串不包含任何 连续重复 的字符。
// 简化下就是相邻的两个都不想等。那么我们只要保证在全部位置上满足 s[i] != s[i-1] , 那么整个串就满足要求了。
// 那么我们从 左到右 遍历 :
// 当 s[i] == '?' 时 , 使 : s[i] = s[i-1] + 1
// 当 s[i] != '?' 时 , 因为 s[i] 不能修改了 , 所以我们判断 s[i-1] 是否等于 s[i] , 
// 如果等于的话 , 令 : s[i - 1] = s[i-1] + 1
// 因为此时 s[i-1] = s[i-2] + 1 , 所以 s[i-1] + 1 后也能保证和 s[i-2] 不相等


#include <string>
using namespace std;

class Solution 
{
public:
    string modifyString(string s) 
    {
        if(s[0] == '?') s[0] = 'a';
        for(int i = 1; i < s.size(); i++)
        {
            if(s[i] == '?') s[i] = (s[i - 1] + 1 - 'a') % 26 + 'a';
            else if(s[i] == s[i - 1]) s[i - 1] = (s[i - 1] + 1 - 'a') % 26 + 'a';
        }
        return s;
    }
};